One option which could be in a browser or in a command window/terminal is the combination of Python, ipython & Pandas plus for in a browser Jupyter - however it does not look much like a spreadsheet. I suspect that this would not be too much of a problem as few people have the time or inclination to read 9 million rows and would be looking at slices of such data or creating summaries such as min, max, mean, sd, etc.
Just to prove the point a generated a .csv file with 10,000,000 rows x 15 columns, (the first column a sequential number, the second a random integer in the range 1..5000000 and the rest "abcdef" and took some measurements with a final blank column due to me ending each line with a comma. I am running on a laptop running Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] under Win10/64.
ipython command prompt times:
%time df = pandas.read_csv('big.csv')
Wall time: 25.3 s
%time df = df.sort_values('Col_0') # This is the random number column
Wall time: 19 s
Wall time: 183 ms
Wall time: 364 ms
Of course with Jupyter notebooks we can do the same sort of thing in a browser:
Pandas will allow you to perform most of the likely manipulations on such a large data set including basic plotting and with the addition of one of the many charting libraries you can produce fancy graphs, etc.
Note that Jupyter & Pandas can be run as a self hosting solution or via a service such as mybinder.org or colab.research.google.com/notebooks/welcome.ipynb or hosted on AWS or similar.